import { ref, UnwrapRef } from 'vue'
import { AxiosResponse } from 'axios'
import { HttpResponse } from '@/api/interceptor'
import useLoading from './loading'

// use to fetch list
// Don't use async function. It doesn't work in async function.
// Use the bind function to add parameters
// example: useRequest(api.bind(null, {}))

export default function useRequest(api, defaultValue = [], isLoading) {
	const { loading, setLoading } = useLoading(isLoading)
	const response = ref < T > defaultValue
	api()
		.then((res) => {
			response.value = res.data
		})
		.finally(() => {
			setLoading(false)
		})
	return { loading, response }
}
